{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "05df843c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "name                     浙江众成\n",
       "industry                   塑料\n",
       "area                       浙江\n",
       "pe                      52.29\n",
       "outstanding              8.55\n",
       "totals                   9.06\n",
       "totalAssets         316361.13\n",
       "liquidAssets        139801.88\n",
       "fixedAssets         123311.22\n",
       "reserved             63046.65\n",
       "reservedPerShare          0.7\n",
       "esp                     0.049\n",
       "bvps                     1.99\n",
       "pb                        2.6\n",
       "timeToMarket         20101210\n",
       "undp                 17748.48\n",
       "perundp                   0.2\n",
       "rev                     17.57\n",
       "profit                  79.12\n",
       "gpr                     25.94\n",
       "npr                      7.88\n",
       "holders                 33327\n",
       "Name: 002522, dtype: object"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "'''深市类议”002522“的股票代码读入后，将丢失前导字符”00“，变成整数2522'''\n",
    "df = pd.read_excel('stock.xlsx', dtype={'code': str})\n",
    "df.set_index('code', inplace=True)\n",
    "# loc 练习\n",
    "df.loc['002522']\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "319a41b6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "111"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(df.industry.unique())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "99943bcc",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "33"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(df.area.unique())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "e319df6e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "area\n",
       "浙江     445\n",
       "江苏     414\n",
       "北京     332\n",
       "广东     313\n",
       "上海     297\n",
       "深圳     290\n",
       "山东     205\n",
       "福建     136\n",
       "四川     124\n",
       "湖南     104\n",
       "湖北     103\n",
       "安徽     103\n",
       "河南      79\n",
       "辽宁      74\n",
       "河北      57\n",
       "新疆      55\n",
       "陕西      52\n",
       "天津      51\n",
       "重庆      50\n",
       "江西      42\n",
       "吉林      41\n",
       "黑龙江     38\n",
       "广西      38\n",
       "山西      37\n",
       "云南      36\n",
       "甘肃      32\n",
       "海南      31\n",
       "贵州      29\n",
       "内蒙      25\n",
       "西藏      18\n",
       "宁夏      14\n",
       "青海      12\n",
       "Name: area, dtype: int64"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.groupby('area').area.count().sort_values(ascending=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "e9b6c2b1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "timeToMarket\n",
       "0         6\n",
       "1990      7\n",
       "1991      4\n",
       "1992     37\n",
       "1993    106\n",
       "1994     99\n",
       "1995     21\n",
       "1996    182\n",
       "1997    192\n",
       "1998     98\n",
       "1999     92\n",
       "2000    130\n",
       "2001     79\n",
       "2002     68\n",
       "2003     65\n",
       "2004     99\n",
       "2005     14\n",
       "2006     65\n",
       "2007    126\n",
       "2008     77\n",
       "2009     98\n",
       "2010    348\n",
       "2011    281\n",
       "2012    155\n",
       "2013      1\n",
       "2014    124\n",
       "2015    223\n",
       "2016    227\n",
       "2017    438\n",
       "2018    105\n",
       "2019    111\n",
       "Name: name, dtype: int64"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "'''得到上市时间，如20190722'''\n",
    "year = df.timeToMarket.astype(str).str[:4]\n",
    "yearnum = df.groupby(year).name.count()\n",
    "yearnum"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "66c319c7",
   "metadata": {},
   "outputs": [],
   "source": [
    "'''加上这一句，能在jupyter notebook演示matplot图表'''\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "eb20219d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Axes: title={'center': '年ipo数量'}, xlabel='timeToMarket'>"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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blyj2zt37oykpCT89ttvzf6c1WpFeXl5oy8iItI3g0HCdcNTMCA5EpncgDKg+CyjUlLibDNLS2u6OV9iYiKys7Ob/bl58+bh2Wef9eSpERGRBj3/xwG+PgXyAZ9lVGRZBgCEhzdN4VksFpSWljb7c48//jjKysrUr5ycHE+eJhEREfmQzzIqFoulxe8JIVBbW9vs98xmM8xm9s8TEREFAp9lVJKTnd0wx44da/K9goICREZGevuUiIiISGN8Fqikp6cjMjIS69evb3R7SUkJDh48iC5duvjozIiIiEgrfBaoGI1GXHnllfjyyy+Rm5ur3v7BBx9ACIGLL77YV6dGREREGiEJIYSvHnzXrl0YPnw4evbsiXnz5uHgwYN47LHH0K1bN2zduhUhISFnvY/y8nJERUWhrKyMy0VERER+orXv3z6dTNu/f398++23uPXWWzFp0iQAQN++ffHFF1+0KkghIiIiffP5poSXXnopDh06hPXr18NkMuG8885DUBD3xiEiIiINBCqAc3+fSy65xNenQURERBrjs2JaIiIiorNhoEJERESaxUCFiIiINIuBChEREWkWAxUiIiLSLE10/XSEMq+uvLzcx2dCREREraW8b59t7qzfByoVFRUAgJSUFB+fCREREbVVRUUFoqKiWvy+T0fou4Msyzhx4gQiIiIgSZJb77u8vBwpKSnIycnheP5W4jVrH1639uF1aztes/bhdWufM103IQQqKiqQlJQEg6HlShS/z6gYDAZ07drVo48RGRnJF2Yb8Zq1D69b+/C6tR2vWfvwurVPS9ftTJkUBYtpiYiISLMYqBAREZFmMVA5A7PZjDlz5sBsNvv6VPwGr1n78Lq1D69b2/GatQ+vW/u447r5fTEtERER6RczKkRERKRZDFSIiIhIsxioEBERkWYxUKEW3XvvvRg7dmyT28vKyjB79mykpaXBbDZjwIABeO+995oct2/fPtx4441ISEhAaGgoxo0bh3Xr1jU57tJLL4UkSU2+Xn/9dQ88KyIi8icBEah46w23qKgId955Jzp37oyoqCjcddddqKmp8cRT8riXXnoJ77zzTpPbq6urcf755+Ptt9/G9ddfj7fffhvdu3fHX/7yF8yaNUs9bvfu3Rg5ciQ2bNiAxx57DC+//DLy8/Nx0UUX4auvvlKPE0IgKysL119/PT7++ONGXxMm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VIiozUJCQpr9/9zcXBQUFCAmJgYAIMsyKioqUFtb2+i40+Xk5CAtLU39c1JSEsxmM3JyctTb+vXrh6+++grTpk3DF198AcC5Ud5jjz2Gb775Bv369UNUVBQcDkej+54+fXqzQcqxY8eQlZWFc845B++99x7uv/9+9Tn89ttvahBit9sRHh7e2ktDRG7GpR8igsFggDv2J+3atSuGDx+OrVu3YuvWrdi2bRt+//33ZgMFV6mpqTh8+LD659zcXFit1kYdQYMGDcLq1asxaNAg9bZPP/0U69atw/Hjx7Fx40ZcccUVTe47LCys2ceMiorCf//7X7z44ot44YUXUF5erj6HK6+8stFzWLFiRaOflSTJLdeLiM6OgQoRISMjAytXrsTJkyexcuXKJlmJ1po4cSKOHj2KrKwsGI1GfPbZZ5gwYcJZ39SnTp2KjRs34r333sORI0dw9913449//CMSExPVYwYNGoSgoCD07dtXva2yshKAs1blu+++w/PPP9/qACIqKgpxcXEYMWIEzj33XLz00ksAgClTpmD9+vU4cOAAAGDhwoW49dZbG/1sRkYGli9fjtzcXPz444+tejwiah8GKkSEp59+GkePHkWPHj1w9913Q5bldt1PdHQ0li5digULFqBPnz745ptvsHTpUphMZ15l7tq1K5YvX463334bmZmZCAsLwz//+c9GxwwePBi9e/dGcHCwetvNN9+Mnj17om/fvnj22Wdx1113Ye/evaitrW3TeT/33HNYuHAhTp48ibS0NPzrX//Cgw8+iP79+2Pnzp1YtGhRo+P//ve/4/XXX0dGRgb+8Y9/tOmxiKhtJMH8JREREWkUMypERESkWQxUiIiISLMYqBAREZFmMVAhIiIizWKgQkRERJrFQIWIiIg0i4EKERERaRYDFSIiItIsBipERESkWQxUiIiISLP+P08q6TXQ6GG+AAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "'''解决中文显示问题'''\n",
    "plt.rcParams['font.sans-serif'] = ['SimHei']\n",
    "plt.rcParams['axes.unicode_minus'] = False\n",
    "yearnum[yearnum.index != '0'].plot(fontsize=14, title='年ipo数量')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "36dd2e43",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "83.7629173463839"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "'''有pe平均市盈率这个列'''\n",
    "df.pe.mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "0f077141",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "98.52254876878798"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "'''观察数据集发现，数据集中亏损股票的pe为0，因此考虑剔除亏损股票'''\n",
    "df[df.pe > 0].pe.mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "7d62e740",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "48.87472375361171"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "'''上面的pe是简单的算术平均，以市值为权重的加权pe可能更能准确地反映市场状况'''\n",
    "'''计算市值'''\n",
    "'''股票单价 = 4esp(每股收益)pe(市盈率)'''\n",
    "df['tvalue']=4*df.esp*df.pe*df.totals\n",
    "np.sum(df.pe*df.tvalue)/df.tvalue.sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "c76b8b13",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>pe均值</th>\n",
       "      <th>股票数</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>board</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>00</th>\n",
       "      <td>63.893655</td>\n",
       "      <td>1398</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30</th>\n",
       "      <td>115.524429</td>\n",
       "      <td>770</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>60</th>\n",
       "      <td>83.506167</td>\n",
       "      <td>1482</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>68</th>\n",
       "      <td>215.954643</td>\n",
       "      <td>28</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "             pe均值   股票数\n",
       "board                  \n",
       "00      63.893655  1398\n",
       "30     115.524429   770\n",
       "60      83.506167  1482\n",
       "68     215.954643    28"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "'''我国股票市场现分为沪市(股票代码60开头)、深圳主板(股票代码00开头)'''\n",
    "'''创业板(股票代码30开头)及最新上市的科创板(股票代码68开头)'''\n",
    "df['board']=df.index.str[:2]\n",
    "'''按板块类型统计pe均值，计数'''\n",
    "'''分组统计aggregate台计方法(简写为agg)'''\n",
    "df.groupby('board').pe.agg([('pe均值','mean') , ('股票数','count')])"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
